package org.example.my_netty.myNettyHandlerChain;

import org.example.my_netty.SocketChannelContext;

import java.nio.ByteBuffer;
import java.nio.channels.SelectionKey;
import java.nio.channels.SocketChannel;


//第一个处理器 负责把信息前面加点东西 先别拆包粘包的了
public class MyFirstHandler implements MyNettyHandler {
    @Override
    public void handle(SocketChannel channel, SocketChannelContext socketChannelContext) throws Exception {

        System.out.println("触发了read事件 worker线程" + Thread.currentThread().getName());

        ByteBuffer buffer = ByteBuffer.allocate(1024); // 自定义缓冲大小

        int bytesRead = channel.read(buffer);
        //-1表示客户端断开连接
        if (bytesRead == -1) {
            channel.close();
            return;
        }

        // 切换读模式查看数据
        buffer.flip();

        // 假设我们用换行符作为消息结束符，检查是否有完整消息
        byte[] data = new byte[buffer.limit()];
        buffer.get(data);
        String msg = new String(data);
        System.out.println("第一个处理器收到消息：" + msg);

        //把消息存到上下文里
        socketChannelContext.setMsg("第一个处理器已阅"+msg);


    }

}
